모듈:Test
local p = {} local getArgs local scheme, typeScheme, pokedex local args local gameAbbr = { '적' = '적녹', '녹' = '적녹', '적녹' = '적녹', '청' = '청', '옐로' = '옐로', '피카츄' = '피카' } local types, colorSet = {}, {} local screen -- 출력할 HTML --- getColorSet(): 타입에 맞는 색상표를 픽업 -- @param typeName{str} local function getColorSet( typeName ) local colorSet = typeScheme'???' if typeSchemetypeName then colorSet = typeSchemetypeName end return colorSet end --- setLeftColumn(): 좌측 열의 기본 데이터를 구성 local function setLeftColumn() local container = mw.html.create( 'div' ) local tbl = mw.html.create( 'table' ) local game = args'게임' or '' local index = args'번호' or '' local name = '???' local shiny = args'이로치' and '_색다른' or '' local gender = args'성별' or '' local level = args'레벨' and 'Lv.' .. args'레벨' or 'Lv.??' local abils = { args'특성1', args'특성2' } local item = args'도구' local genderFormat = { male = '♂', female = '♀', } local imageFormat, typeFormat, abilFormat, itemFormat = '', '', '', '', '' container :addClass( 'float-left' ) :node( tbl ) -- 게임 데이터를 프로세스 if game and gameAbbrgame then game = gameAbbrgame .. '_' end -- 이름 데이터를 프로세스 if index ~= '' then name = pokedex.getName( index ) end -- 성별 데이터를 프로세스 if gender '수' then gender = genderFormat.male elseif gender '암' then gender = genderFormat.female elseif gender '랜덤' then gender = genderFormat.male .. '/' .. genderFormat.female else gender = '' end -- 이미지 데이터를 프로세스 imageFormat = '파일:' .. game .. index .. shiny .. '.png' -- 표 속성 정의 tbl :addClass( 'w-100' ) :css( 'border-spacing', 0 ) -- 이미지 셀 추가 :tag( 'tr' ) :tag( 'td' ) :attr( 'colspan', 2 ) :addClass( 'bg-white text-center' ) :css({ 'border-radius' = '5px', 'width' = '150px', 'height' = '130px' }) :wikitext( imageFormat .. ' '.. name ..' ' .. gender .. ' ' .. level ) -- 거터 추가 tbl :tag( 'tr' ) :tag( 'td' ) :attr( 'colspan', 2 ) :css( 'height', '5px' ) -- 타입 데이터를 프로세스 if #types ~= 0 then typeFormat = '' for i = 1, #types do typeFormat = typeFormat .. '[.. types[i .. '|' .. typesi .. ']]' end typeFormat = typeFormat .. '' end -- 특성 데이터를 프로세스 if #abils ~= 0 then for i = 1, #abils do abilFormat = abilFormat .. ' [.. abils[i .. '|' .. abilsi .. ']] ' end else abilFormat = '특성 없음' end -- 도구 데이터를 프로세스 if item then itemFormat = '파일:도트_아이콘_' .. item .. '.png' .. item .. '' else itemFormat = '도구 없음' end -- 타입, 특성, 도구 행 추가 local function addDataRow( thData, tdData ) local row = tbl:tag( 'tr' ):addClass( 'align-top' ) thData = thData .. ':' row :tag( 'th' ) :addClass( 'text-smaller font-weight normal' ) :wikitext( thData ) row :tag( 'td' ) :wikitext( tdData ) end addDataRow( '타입', typeFormat ) addDataRow( '특성', abilFormat ) addDataRow( '도구', itemFormat ) return container end local function addSkill( data ) local tbl = mw.html.create( 'table' ) tbl :addClass( 'w-100 bg-white' ) :css({ 'border' = '2px solid transparent', 'border-radius' = '5px', 'border-spacing' = 0 }) local firstRow = tbl:tag( 'tr' ) local secondRow = tbl:tag( 'tr' ):css( 'font-size', '12px' ) firstRow :tag( 'td' ) :attr( 'colspan', 2 ) :css( 'padding', '.2em 0' ) :wikitext( data1 ) secondRow :tag( 'td' ) :wikitext( data2 ) secondRow :tag( 'td' ) :wikitext( data3 ) return tbl end --- setRightColumn(): 우측 열의 기술표를 구성 local function setRightColumn() local container = mw.html.create( 'div' ) local skills = {} container :addClass( 'float-left text-center' ) :css({ margin = '0 0 0 5px', width = '10em' }) for k, v in pairs( args ) do local cat, num = tostring( k ):match('^(.+)(1-9%d*)$') num = tonumber( num ) if cat '기술' then skillsnum1 = v elseif cat '기술타입' then skillsnum2 = v elseif cat '기술분류' then skillsnum3 = v end end for i = 1, #skills do addSkill( skillsi ) end return container end --- buildOut() local function buildOut() screen = mw.html.create( 'div' ) :addClass( 'mb-1 rounded group' ) :css({ background = 'inherit', border = '3px solid transparent', padding = '5px', display = 'table' }) local left = setLeftColumn() local right = setRightColumn() screen :node( left ) :node( right ) :done() end -- Main function function p.main( frame ) if not getArgs then getArgs = require( 'Module:Arguments' ).getArgs end if not scheme then scheme = mw.loadData( 'Module:Color/Scheme' ) typeScheme = scheme.types end if not pokedex then pokedex = require( 'Module:Pokedex' ) end -- 파라미터를 프로세스 args = getArgs( frame ) -- 타입 데이터를 이용해 색상표 정의 types = { args'타입1', args'타입2' } for i = 1, #types do colorSeti = getColorSet( typesi ) end -- 출력할 HTML을 구성 buildOut() return screen end return p